package Java基础.数据类型;

public class 浮点类型 {
	public static void main(String[] args) {
		double a=3.14; //浮点数值3.14默认为double类型
		//float b=3.14; //因为3.14默认为double类型,4个字节赋值给两个字节从而会报错;
		float a1=3.14f; //表示3.14先自动转型为float再赋值给a1
		double b=314E-2; //科学计数法表示double
		float b1=314E-2f; //科学计数法表示float
		
		//浮点数在内存中表示是有误差的
		float c=0.01f;
		double c1=0.1/10;  //这里在内存中可能表示的是0.99999...,我们取值的时候进行了四舍五入变成了0.01
		System.out.println(c==c1); //一样是0.01,但就是不相等;
		
	}
	
//-----------------------------------------------浮点类型知识----------------------------------------------------------------------------	
	/*
		浮点类型
		    float 又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求
		    double 表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分引用程序都采用double类型
		    浮点类型常量的两种表现形式
		    十进制形式,例如:3.14 
		    科学计数法形式: 314E-2-->表示314*10^(-2) -->314乘以10的负2次方
		    注意:浮点数值默认为double类型,要转变为float类型,需要在后面增加F/f; 如: float a=3.14f;
		 --浮点型:
		         类型      占用存储空间 	范围
		         float      4个字节            -3.403E38-3.403E38
		         double  8个字节            -1.798E308-1.798E308
		  注意:
		      浮点数存在舍入误差,很多数字不能精确表示.如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal
		      最好避免比较重使用浮点数
	 */
}
